package com.p1;

import com.p1.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

//SpringMVC与前端的数据处理方式

@Controller
@RequestMapping("/user")
public class UsarConteoller {

    //第一种情况:前端传回的参数名与我们后端的相同,这样可以直接接收
    @GetMapping("/t1")
   public String test1( String name, Model model){ //localhost:8080/user/t1?name=xxx
        //1.从前端接收参数
        System.out.println("接收到前端的参数为:"+name);
        //2. 将数据传递给前端
        model.addAttribute("msg",name);
        //3.跳转视图
       return "test";
    }

    //第二种情况:前端传递的传输名和后端不一样;这时候就需要在参数旁加上@RequestParam("xxx")注解
        //一般无论前端传递的和我们后端一样还是不一样,我们都加上这个注解,可以避免很多无用的请求
    @GetMapping("/t2")          //比如我们前端传递的参数名为username.而我们后端定义的是name,这是就需要加上@RequestParam("username")
    public String test2(@RequestParam("username") String name, Model model){ //localhost:8080/user/t1?username=xxx
        //1.从前端接收参数
        System.out.println("接收到前端的参数为:"+name);
        //2. 将数据传递给前端
        model.addAttribute("msg",name);
        //3.跳转视图
        return "test";
    }

    //第三种情况:前端传递的是一个对象;这时候就需要将这个对象定义出来,  User(id,name,age)
    /*
      1. 接收前端用户传递的参数,判断参数名是否在方法的参数表里,假设存在可以直接使用(第一种情况)
      2. 假设传递的是一个对象User,匹配User中的字段名与方法中的定义的是否相同

    */
    @GetMapping("/t3")
    public String test3(User user){
        //1.接收前端传递的对象
        System.out.println(user);
        //3.跳转视图
        return "test";
    }

}
